package com.tuling.learnjuc.base;

import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;

public class DirectoryReaderDemo {  
  
    public static void main(String[] args) {  
        // 替换为你的目录路径  
        Path directoryPath = Paths.get("D:\\ev录屏\\并发编程(VIP7)");
  
        try {


            // 使用Files类的walkFileTree方法来遍历目录树  
            Files.walkFileTree(directoryPath, new SimpleFileVisitor<Path>() {
                @Override  
                public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
                    // 排除目录名为“笔记”的目录
                    if (dir.getFileName().toString().equals("笔记")) {
                        return FileVisitResult.SKIP_SUBTREE; // 跳过该目录及其子目录
                    }
                    // 打印目录名称  
                    System.out.println(dir.getFileName());
                    return FileVisitResult.CONTINUE; // 继续遍历  
                }  
  
                @Override  
                public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
                    // 去除文件后缀名
                    String fileNameWithoutExtension = removeExtension(file.getFileName().toString());

                    // 打印文件名（无后缀）
                   // System.out.println(fileNameWithoutExtension);
                    return FileVisitResult.CONTINUE; // 继续遍历  
                }

                private  String removeExtension(String fileName) {
                    int dotIndex = fileName.lastIndexOf('.');
                    if (dotIndex == -1) {
                        return fileName;
                    }
                    return fileName.substring(0, dotIndex);
                }

                @Override  
                public FileVisitResult postVisitDirectory(Path dir, IOException exc) {  
                    // 在遍历完一个目录后执行的操作（如果需要）  
                    return FileVisitResult.CONTINUE;  
                }  
  
                @Override  
                public FileVisitResult visitFileFailed(Path file, IOException exc) {  
                    // 访问文件失败时执行的操作（例如，文件不可读）  
                    System.err.println("Unable to visit: " + file.getFileName());  
                    exc.printStackTrace();  
                    return FileVisitResult.CONTINUE;  
                }  
            });  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }  
}